/**
 * 搜索剪枝
 */
#include <bits/stdc++.h>
using namespace std;
bool vis[21];                   // 是否访问过, 两两不相等
int V[21];                      // 回溯数组
int ans = 0;
int K;
void dfs(int cur)
{
    
    if(cur >= 2)
    {
        // for(int i = 0; i < cur; ++ i)
        // {
        //     cout << V[i] << " ";
        // }
        // cout << endl;
        ans += 1;
    }
    if(cur >= K) return;
    for(int i = 1; i <= K; ++i)
    {
        if(vis[i]) continue;
        
        // 第一个数和第二个数能直接选
        if(cur <= 1)
        {
            vis[i] = true;
            V[cur] = i;
            dfs(cur + 1);
            vis[i] = false;
        }
        
        // 如果选择的是第三个数, 则有限制
        else if(cur > 1)
        {
            if((V[cur - 1] > V[cur - 2] && i < V[cur - 2])
                || V[cur - 1] < V[cur - 2] && i > V[cur - 2])
            {
                vis[i] = true;
                V[cur] = i;
                dfs(cur + 1);
                vis[i] = false;
            }
        }
    }
}
int main()
{
#ifdef LOCAL
    //freopen("", "r", stdin);
#endif
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> K;
    dfs(0);
    cout << ans << endl;
    return 0;
}